#pragma once

#include <arpa/inet.h>
#include <netinet/in.h>
#include <string>
#include <cstring> // for memset

class InetAddress
{
private:
    sockaddr_in addr_; // 表示地址协议的结构体

public:
    InetAddress();
    InetAddress(const std::string &ip, uint16_t port); // 监听socket的构造函数
    InetAddress(const sockaddr_in &addr); // 客户端连接的构造函数
    ~InetAddress();

    std::string ip() const; // 返回字符串表示的地址
    uint16_t port() const; // 返回整数表示的端口
    const sockaddr* addr() const; // 返回sockaddr指针

    void setAddr(sockaddr_in peerAddr);
};